/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import fisica.LocalidadFisica;
import hibernate.objeto.Localidad;
import hibernate.objeto.Provincia;
import presentacion.CapaPresentacion;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;

/**
 *
 * @author Gonzalo
 */
public class LocalidadLogica extends CapaLogica {

    /**
     * Retorna un vector de localidades según la provincia.
     *
     * @param unaProvincia, el objeto Provincia por el cual se consulta
     * @return Un vector de objetos Localidad
     */
    public static Vector<Localidad> getVectorDeLocalidadPorProvincia(
            Provincia unaProvincia) {
        Vector<Localidad> retorno = new Vector<Localidad>();
        Set<Localidad> arregloDeLocalidades = unaProvincia.getLocalidads();
        Iterator<Localidad> iter = arregloDeLocalidades.iterator();

        while(iter.hasNext()){
            retorno.add(iter.next());
        }
        return retorno;
    }

    /**
     * Retorna el objeto Localidad del par localidad, provincia según el nombre
     * de la localidad y el nombre de la provincia
     *
     * @param nombreLocalidad El nombre de la localidad consultada
     * @param nombreProvincia El nombre de la provincia consultada
     * @return El objeto Localidad consultado, null si no existe
     */
    public static Localidad getLocalidadPorNombreYNombreProvincia(
            String localidad, String provincia) {
        return LocalidadFisica.getLocalidadPorNombreYNombreProvincia(
                localidad, provincia);
    }

    /**
     * Retorna un arreglo de strings con las localidades de una provincia dada.
     *
     * @param unaProvincia El objeto Provicia por el cual se consulta
     * @return Un arreglo de strings con los nombres de localidades
     */
    public static String[] getListaDeLocalidadPorProvincia(Provincia unaProvincia) {
        // Obtiene todas las localidades del objeto provincia
        //y los deposita en un vector
        Vector<Localidad> vectorLocalidad = getVectorDeLocalidadPorProvincia(
                    unaProvincia);

        // El ComboBox necesita para ser cargado un arreglo de strings, por lo
        // que se crea
        String[] arregloStringLocalidad = new String[vectorLocalidad.size() + 2];
        arregloStringLocalidad = vectorAArregloString(vectorLocalidad);

        return arregloStringLocalidad;
    }

    /**
     * Convierte un vector de localidades en un arreglo de los nombres de los
     * localidades.
     *
     * @param vectorLocalidad El vector a convertir
     * @param arregloString La lista resultante vacia
     * @return La lista resultante cargada
     */
    private static String[] vectorAArregloString(
            Vector<Localidad> vectorLocalidad) {

        int tamaño = vectorLocalidad.size() + 1;
        String[] arregloStringModificado = new String[tamaño];

        String primerElemento = "";

        arregloStringModificado[0] = primerElemento;

        for (int i = 0; i < vectorLocalidad.size(); i++){
            arregloStringModificado[i+1] =
                    vectorLocalidad.get(i).getNombreLocalidad();
        }

        return arregloStringModificado;
    }

    /**
     * Retorna el texto HTML correspondiente a la descripcion de la localidad.
     *
     * @param localidad La localidad
     * @return El String que contiene el HTML
     */
    public static String getLocalidadHTML(Localidad localidad) {
        String localidadHTML = "";
        
        if (localidad != null) {
            localidadHTML =
                    "<font size=\"3\" face=\"arial\" color=\"black\">Provincia: </font>"
                    + "<font size=\"3\" face=\"arial\">" +
                    localidad.getProvincia().getNombreProvincia() + "</font><br>" +
                    "<font size=\"3\" face=\"arial\" color=\"black\">Localidad: </font>"
                    + "<font size=\"3\" face=\"arial\">" +
                    localidad.getNombreLocalidad() + "</font><br>";
        }
        return localidadHTML;
    }

}
